package com.bbva.gptf.back.dominio;

import java.sql.Types;
import java.util.HashMap;
import java.util.Map;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.jdbc.core.SqlOutParameter;
import org.springframework.jdbc.core.SqlParameter;
import org.springframework.jdbc.core.simple.SimpleJdbcCall;
import org.springframework.stereotype.Component;

import com.bbva.gptf.back.util.Constantes;
import com.bbva.jee.arq.spring.core.log.I18nLog;
import com.bbva.jee.arq.spring.core.log.I18nLogFactory;

@Component
@Configurable
public class Funciones {

	private static final I18nLog LOG = I18nLogFactory
			.getLogI18n(SpEjecutaProc.class);

	private SimpleJdbcCall simpleJdbcCall;

	@Autowired
	private DataSource dataSource;

	public int getRowsLoads(final int cdProceso) {
		simpleJdbcCall = new SimpleJdbcCall(dataSource);
		final Map<String, Object> parametros = new HashMap<String, Object>();
		final String procedureName = Constantes.GETROWSLOADS;
		simpleJdbcCall.withoutProcedureColumnMetaDataAccess();
		simpleJdbcCall.withProcedureName(procedureName);
		simpleJdbcCall.declareParameters(new SqlParameter("PROCESO",
				Types.INTEGER));
		simpleJdbcCall.declareParameters(new SqlOutParameter("FILAS",
				Types.INTEGER));
		parametros.put("PROCESO", cdProceso);
		final Map<String, Object> resultado = simpleJdbcCall
				.execute(parametros);
		return (Integer) resultado.get("FILAS");
	}

	// @PersistenceContext
	// transient EntityManager entityManager;

	public void setDataSource(final DataSource dataSource) {
		this.dataSource = dataSource;
	}

}
